package org.jeecg.modules.generator.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.jeecg.modules.generator.entity.SysGenerateItemConfigEntity;
import org.jeecg.modules.generator.vo.SysGenerateItemConfigVo;
import org.jeecg.modules.generator.service.SysGenerateItemConfigService;
import org.jeecg.common.api.vo.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.jeecg.common.aspect.annotation.AutoLog;


/**
 * @Description 低代码配置项控制器
 * @Author Administrator
 * @Date 2023-05-05 21:46:38
 */
@RestController
@RequestMapping(value = "generator/TbGenerateItemConfig")
public class SysGenerateItemConfigController {

    @Autowired
    private SysGenerateItemConfigService sysGenerateItemConfigService;


    /**
     * 查询低代码配置项分页数据
     *
     * @param sysGenerateItemConfigVo
     * @return
     */
    @AutoLog("低代码配置项-分页查询")
    @GetMapping(value = "list")
    public Result<IPage<SysGenerateItemConfigEntity>> list(SysGenerateItemConfigVo sysGenerateItemConfigVo) {

        Result<IPage<SysGenerateItemConfigEntity>> result = new Result<>();
        QueryWrapper queryWrapper = sysGenerateItemConfigVo.getQueryWrapper();
        if (StringUtils.isNotEmpty(sysGenerateItemConfigVo.getFieldRemark())) {
            queryWrapper.like("FIELD_REMARK", sysGenerateItemConfigVo.getFieldRemark());
        }
        IPage<SysGenerateItemConfigEntity> pageList = sysGenerateItemConfigService.page(sysGenerateItemConfigVo.getPage(), queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }

    /**
     * 根据主键查询低代码配置项对象数据
     *
     * @param id
     * @return
     */
    @GetMapping(value = "queryById/{id}")
    public Result queryById(@PathVariable("id") String id) {

        SysGenerateItemConfigEntity tbGenerateItemConfig = sysGenerateItemConfigService.getById(id);
        if (tbGenerateItemConfig != null) {
            return Result.ok(tbGenerateItemConfig);
        } else {
            return Result.error("未找到查询对象！");
        }
    }

    /**
     * 低代码配置项新增保存
     *
     * @param sysGenerateItemConfigEntity
     * @return
     */
    @AutoLog("低代码配置项-新增保存")
    @PostMapping(value = "add")
    public Result add(@RequestBody SysGenerateItemConfigEntity sysGenerateItemConfigEntity) {
        sysGenerateItemConfigService.save(sysGenerateItemConfigEntity);
        return Result.ok("新增低代码配置项成功！");
    }

    /**
     * 低代码配置项修改保存
     *
     * @param sysGenerateItemConfigEntity
     * @return
     */
    @AutoLog("低代码配置项-修改保存")
    @PutMapping(value = "edit")
    public Result edit(@RequestBody SysGenerateItemConfigEntity sysGenerateItemConfigEntity) {

        SysGenerateItemConfigEntity tbGenerateItemConfigTmp = sysGenerateItemConfigService.getById(sysGenerateItemConfigEntity.getId());
        if (tbGenerateItemConfigTmp != null) {
            sysGenerateItemConfigService.updateById(sysGenerateItemConfigEntity);
            return Result.ok("修改低代码配置项成功！");
        } else {
            return Result.error("修改低代码配置项不存在！");
        }
    }

    /**
     * 低代码配置项删除
     *
     * @param id
     * @return
     */

    @AutoLog("低代码配置项-删除")
    @DeleteMapping(value = "delete")
    public Result delete(@RequestParam("id") String id) {

        sysGenerateItemConfigService.removeById(id);
        return Result.ok("删除低代码配置项数据成功！");
    }
}
